import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta es la clase Aespacio de tipo apuntador (apunta a Espacios).
 * @author Miguel Martinez Aguilar
 * @version 04 de abril de 2013
 */
public class Aespacio extends Apuntador
{
    // Declaracion de variables de instancia
    private Espacio esp;// es un objeto espacio.
    private Armeria arm;// es un objeto Armeria.
    private boolean activado;// es un boleano que indica si este apuntador esta activado.

    /**
     * Este es el constructor de Aespacio.
     * @param arm: el objeto Armeria al cual se va a hacer referencia.
     */
    public Aespacio(Armeria arm)
    {
        super();
        esp = null;
        this.arm = arm;
        activado = false;
    }
    
    /**
     * Este metodo ubica a este objeto apuntador con el cursor.
     */
    public void act() 
    {
        if(activado){
            super.cambiaCoordenadas();
            this.ubicaEspacio();
            this.clickAqui();
        }
    }
    
    /**
     * Este es el metodo que checa si el puntero se encuentra con un espacio
     */
    public void ubicaEspacio()
    {
        if(super.ubicaObjeto(false)){
            if(esp != (Espacio)alguien)if(esp!=null)esp.resalta(false);
            esp=(Espacio)alguien;
            esp.resalta(true);
            this.setImage("selector.png");
        }
        else if(esp != null){
            esp.resalta(false);
            this.setImage("nada.png");
        }
    }
    
    /**
     * Este es el metodo que verifica si se ha realizado un click con el mouse
     */
    public void clickAqui()
    {
        if(super.clickValido()){
            esp=(Espacio)alguien;
            esp.resalta(false);
            arm.enviaProyectil(esp);
            this.desactivar();
        }
    }
    
    /**
     * Este metodo activa el apuntador
     */
    public void activar()
    {
        activado = true;
    }
    
    /**
     * Este metodo desactiva el apuntador
     */
    public void desactivar()
    {
        activado = false;
        this.setImage("nada.png");
        arm.lanzamiento(true);
    }
    
    /**
     * Este metodo regresa el estado del apuntador
     */
    public boolean estaActivo()
    {
        return activado;
    }
}
